package tests;

import common.Utils;
import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

import java.time.Duration;

public class LoginPage extends Utils {
    // 指定页面的 URL
    private static String url = "http://127.0.0.1:8080/login.html";
    // 设置显式等待
    private WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(2));
    // 创建构造方法, 传入 url
    public LoginPage() {
        super(url);
    }

    // 测试页面是否成功加载
    public void loginPageRight() throws InterruptedException {
        // 通过查看页面元素是否存在来检查页面加载是否成功
        // 查找状态提示框
        driver.findElement(By.cssSelector("#message"));
        // 获取页面标题
        String title = driver.getTitle();
        // 验证当前页面标题信息
        assert title.equals("音乐播放器登录页面");
    }

    // 检查登录功能----登录失败
    public void loginFail() throws InterruptedException {
        // 1. 测试用户名为空
        // 刷新当前页面,防止输入框中残留信息
        driver.navigate().refresh();
        driver.findElement(By.cssSelector("#user")).sendKeys("123");
        driver.findElement(By.cssSelector("#submit")).click();
        // 显式等待弹窗出现
        wait.until(ExpectedConditions.alertIsPresent());
        Alert alert = driver.switchTo().alert();
        // 验证弹窗的文本信息
        assert alert.getText().equals("用户名或密码错误!");
        // 点击确定,关闭弹窗
        alert.accept();
        // 2. 测试用户名不存在
        driver.findElement(By.cssSelector("#user")).sendKeys("usseee");
        driver.findElement(By.cssSelector("#password")).sendKeys("123");
        driver.findElement(By.cssSelector("#submit")).click();
        wait.until(ExpectedConditions.alertIsPresent());
        assert alert.getText().equals("用户名或密码错误!");
        alert.accept();
        // 3. 测试用户名正确, 密码为空
        driver.findElement(By.cssSelector("#user")).sendKeys("lisi");
        driver.findElement(By.cssSelector("#submit")).click();
        wait.until(ExpectedConditions.alertIsPresent());
        assert alert.getText().equals("密码错误! ");
        alert.accept();
        // 4. 测试用户名正确, 密码错误
        driver.findElement(By.cssSelector("#user")).sendKeys("lisi");
        driver.findElement(By.cssSelector("#password")).sendKeys("232424");
        driver.findElement(By.cssSelector("#submit")).click();
        wait.until(ExpectedConditions.alertIsPresent());
        assert alert.getText().equals("密码错误! ");
        alert.accept();
    }

    // 检查登录功能----登录成功
    public void loginSuc() throws InterruptedException {
        // 刷新当前页面,防止输入框有残留信息
        driver.navigate().refresh();
        // 输入存在的用户名和正确的密码
        driver.findElement(By.cssSelector("#user")).sendKeys("lisi");
        driver.findElement(By.cssSelector("#password")).sendKeys("123456");
        driver.findElement(By.cssSelector("#submit")).click();
        // 显式等待, 等待弹窗出现
        wait.until(ExpectedConditions.alertIsPresent());
        Alert alert = driver.switchTo().alert();
        // 验证弹窗文本信息
        assert alert.getText().equals("登录成功! ");
        // 点击确定,关闭弹窗
        alert.accept();
        // 获取当前页面标题
        String title = driver.getTitle();
        // 验证当前页面标题信息,观察是否成功跳转
        assert title.equals("在线音乐列表");
    }

}
